1. Field of the Invention
The present invention is related to multiprocessor computer systems, and more particularly to global clock management within a multiprocessor computer system.
2. Background Information
Large-scale multiprocessor systems typically need to coordinate many separate processing elements in a way that allows processing elements to cooperate. As part of this type of coordination, the operating systems of such multiprocessor systems should help to improve performance among the cooperating processing elements. In addition, the operating systems of such multiprocessor systems should minimize any interference with application programs that are running on separate processing elements.
One useful way to minimize interference between an operating system and any application programs is to maintain a common time base among the separate processing elements. Maintaining a common time base among the separate processing elements helps to keep communication between the application programs synchronized. In addition, scheduling operating system services in a non-disruptive manner (i.e., by keeping the services synchronized across the nodes) allows each application to stay more synchronized.
In some multiprocessor systems, the operating system uses a periodic interrupt called a system timer to maintain proper operation. While this timer is required for operation, it causes interference with the running application. A common global clock allows operating system timer interrupts to be lined up across all the nodes such that the applications running on the nodes are all interfered with at roughly the same time. Lining up the operating system timer interrupts across all of the nodes also reduces the overall operating system overhead for applications that perform frequent inter-processor synchronization. In addition, a common global clock may be useful for debugging code involving communication between nodes.
One approach for synchronizing nodes in large-scale multiprocessor systems is to use a separate virtual channel within the network fabric. Each node in the network fabric exchanges a timestamp with their parent node. The systems synchronize by measuring the round trip time across each of the respective links.
In one such approach, the respective timestamps between peer nodes within the network fabric establishes time deltas between the peer nodes. Keeping track of these time deltas between the peer nodes using iterative data collection and calculation allows the entire multiprocessor system to maintain a common timescale.
One of the deficiencies of this approach is that it requires a dedicated separate virtual channel to avoid queuing delays on the links between the peer nodes within the network fabric. What is needed is a system and method for global clock management within a multiprocessor computer system which does not require a dedicated separate virtual channel.